package es.nadalgoyo.frikiquest;

import es.nadalgoyo.frikiquest.control.listener.OnTimeOutListener;
import es.nadalgoyo.frikiquest.control.util.ThreadTiempo;
import es.nadalgoyo.frikiquest.control.util.ThreadTiempoActivo;
import es.nadalgoyo.frikiquest.dispatcher.RespuestaDispatcher;
import es.nadalgoyo.frikiquest.util.Constantes;
import es.nadalgoyo.frikiquest.util.Util;
import es.nadalgoyo.frikiquest.R;
import es.sergionadal.mvc.dispatcher.AbstractDispatcher;

public class CuestionTiempoActivity extends AbstractCuestionActivity {

	public OnTimeOutListener listener;

	private boolean tiempo = true;

	private ThreadTiempoActivo activo;

	public boolean isTiempo() {
		return tiempo;
	}

	public void setTiempo(boolean tiempo) {
		this.tiempo = tiempo;
	}

	@Override
	public AbstractDispatcher reponseListener(boolean isOK) {
		if (tTiempo!=null)
			tTiempo.stopTiempo();
		
		if (activo!=null)
			activo.stopActivo();
		
		RespuestaDispatcher respuesta;
		if (isOK) {
			if (getComposicion().getRespuesta().isOK()) {
				snd = getSoundPlayerNewInstance(R.raw.wookie);
				snd.play();
				respuesta = new RespuestaDispatcher(this,
						RespuestaDispatcher.RESPUESTA_ISOK);
				respuesta.setPuntuacion(getPuntuacion()
						+ getComposicion().getPuntos());
			} else {
				respuesta = Util.getNotOk(this, getPuntuacion(),
						Constantes.TIPO_TIEMPO);
			}
		} else {
			respuesta = Util.getNotOk(this, getPuntuacion(),
					Constantes.TIPO_TIEMPO);
		}

		return respuesta;

	}

	@Override
	protected void timeInit() {
		if (activo ==null){
			activo = new ThreadTiempoActivo(Constantes.THREAD_ACTIVO, this);
			activo.start();
		}
		
		if (tTiempo ==null){
			tTiempo = new ThreadTiempo(this, Constantes.THREAD_TIEMPO, 10,
					getBaseContext());
			tTiempo.start();
		}
	}

	public void setOnTimeOutListener(OnTimeOutListener timeOutListener) {
		listener = timeOutListener;
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();

		activo = null;
		tTiempo = null;
	}
}